package cn.group.hotel2.mapper;

import cn.group.hotel2.pojo.entity.Message;
import cn.group.hotel2.pojo.vo.MessageListCountVO;
import cn.group.hotel2.pojo.vo.MessageListItemVO;
import cn.group.hotel2.pojo.vo.MessageStandardVO;
import cn.group.hotel2.pojo.vo.ReplyListItemVO;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface MessageMapper {
    /**
     * 添加留言表
     * @param message 留言实体类
     * @return 受影响的行数
     */
    int insert(Message message);

    /**
     * 批量添加留言表
     * @param messages 留言表实体类的集合
     * @return 受影响的行数
     */
    int insertBatch(List<Message> messages);

    /**
     * 根据id删除留言表
     * @param id 记录id
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 批量删除留言表
     * @param ids 多条记录id
     * @return 受影响的行数
     */
    int deleteBatch(Long...ids);

    /**
     * 根据id修改留言表
     * @param message 房间清洁实体类
     * @return 受影响的行数
     */
    int update(Message message);

    /**
     * 统计留言表中数据的数量
     * @return 统计数量
     */
    int count();

    /**
     * 根据id查询留言表详情
     * @param id 记录id
     * @return 查询详情结果
     */
    MessageStandardVO getStandardById(Long id);

    /**
     * 查询留言表列表
     * @return 查询列表结果
     */
    List<MessageListItemVO> list();

    /**
     * 查询列表所有的数据以统计其数量
     * @return 查询列表结果
     */
    List<MessageListCountVO> listCount();

    /**
     * 根据所选的页数来分页查询
     * @param pageNum 需要跳过的记录数
     * @return 查询列表结果
     */
    List<MessageListItemVO> listByPageNum(Long pageNum);


    /**
     * 根据留言id查询回复列表
     * @param id 留言id
     * @return 查询结果
     */
    List<ReplyListItemVO> listById(Long id);

    /**
     * 查询处于待回复状态下的留言列表
     * @return 查询结果
     */
    List<MessageListItemVO> listWaitReply();

    /**
     * 根据所选的页数来分页查询处于待回复状态下
     * @param pageNum 需要跳过的记录数
     * @return 查询列表结果
     */
    List<MessageListItemVO> listWaitReplyByPageNum(Long pageNum);

    /**
     * 查询处于待回复状态下的列表所有的数据以统计其数量
     * @return 查询列表结果
     */
    List<MessageListCountVO> listWaitReplyCount();

    /**
     * 查询处于已回复状态下的留言列表
     * @return 查询结果
     */
    List<MessageListItemVO> listReply();

    /**
     * 根据所选的页数来分页查询处于已回复状态下的
     * @param pageNum 需要跳过的记录数
     * @return 查询列表结果
     */
    List<MessageListItemVO> listReplyByPageNum(Long pageNum);

    /**
     * 查询处于已回复状态下的列表所有的数据以统计其数量
     * @return 查询列表结果
     */
    List<MessageListCountVO> listReplyCount();
}
